\section{Descripcion}
%Descripción y desarrollo de los experimentos.

El desarrollo del sistema se puede dividir en cuatro etapas: \emph{armado del diccionario}, \emph{definicion de reglas}, \emph{aplicacion de reglas} y \emph{recoleccion de resultados}. Las mismas serás descriptas en más profundidas a continuación.

\subsection{Armado del diccionario}

Antes de empezar a analizar los comentarios, fué nescesario definir las palabras relevantes del dominio y clasificarlas, ya que por ejemplo, no cumplen la misma función gramátical \emph{pizza} o \emph{excelente}.

Las palabras se clasificaron en los siguientes grupos: 
\begin{itemize}
\item Entidad: Define a los sustantivos relevantes del dominio, como ser comidas, atención, ambiente, etc.
\item Adjetivo: Son los adjetivos calificativos, estos a su vez se dividieron en:
\subitem Positivo
\subitem Neutro
\subitem Negativo
\item Verbo: verbos
\item Artículo: articulos
\item Palabras vacías: todas aquellas palabras que no están clasificadas en ningun otro grupo.
\end{itemize}

Dado que el idioma castellano contiene un gran volumen de palabras, no es posible clasificarlas en su totalidad. Con lo que se definió un diccionario acotado de palabras relevantes en nuestro dominio (los comentarios de la guia oleo).

El primer paso para construir el diccionario fue simplemente ordenar por cantidad de apariciones las palabras de nuestro conjunto de datos. Con este procedimiento se logró conseguir una primera aproximación sobre la importancia de las palabras. Con esta lista ordenada se tomaron las primeras 1000 como primer diccionario. Esto se debe a que la clasificación en grupos es de manera manual y lleva mucho tiempo.

Pero dado que el tiempo con que se contaba no era suficiente para caracterizar todas las palabras, se realizó una nueva iteración sobre estas para obtener solamente la raíz para así disminuir el volumen a clasificar y poder obtener un diccionario mas completo. Por ejemplo, para caracterizar palabras como \emph{malo, mala, mal, malos, malas, males} sólo fué nescesario caracterizar \emph{mal}.

Este método si bien ayuda a disminuir la cantidad de elementos del dominio, también trae sus consecuencias, ya que palabras como \emph{precios} y \emph{preciosamente} tienen la misma raíz \emph{preci}, siendo la primera una \emph{Entidad} y la segunda un \emph{Adjetivo}. Pero esto fué algo con lo que se aceptó seguir adelante.

Una vez obtenido un diccionario con todas las raices ordenadas por cantidad de apariciones se comenzaron a caracterizar solamente las más importantes. Es necesario aclarar que la clasificación se realizó en el contexto de la \emph{GuíaOleo}, ya que palabras como \emph{tierno} se tomó como un adjetivo positivo y palabras como \emph{abuelo} no se consideraron como entidades a pesar de ser sustantivos.

Una vez que se desarrollo el sistema con este diccionario, se decidió enriquecerlo de manera semiautomática. Este proceso será explicado más adelante.


\subsection{Definición de reglas}

Con un diccionario definido, el siguiente paso fué representar los criterios por los cuales que clasificaría a una oración como relevante o no. Esto se realizó mediante el uso de expresiones regulares.

De esta menara se definieron expresiones regulares para la busqueda de las oraciones que cumplen con el criterio mensionado anteriomente. Esto fué realizado manualmente y las expresiones regulares se fueron creando en base al sentido común y pruebas sobre conjunto de datos de entrenamiento.

Las reglas que se obtubieron finalmente fueron las siguientes:

\begin{verbatim}
(ART)* ENTITY (EMPTY)+ (ADJETIVE)+ ( y |ADJETIVE)*
(ART)* ENTITY (VERB)+ (ADJETIVE)+ (EMPTY|ADJETIVE)*
(ART)* ENTITY (VERB)+ (EMPTY)+ (ADJETIVE)+ (EMPTY|ADJETIVE|ART)* (ENTITY)*
(ART)+ (ADJETIVE)+ ENTITY (EMPTY)+ (ADJETIVE)+
(ART)+ ENTITY (ADJETIVE)+
(no)* (VERB)* (ART)+ (ADJETIVE)+ ENTITY
(ART)* ADJETIVE ART ENTITY
(ART)* VERB ADJETIVE ART ENTITY
VERB VERB ADJETIVE
Muy ADJETIVE (ART)* ENTITY
uno de los ADJETIVE ENTITY para comer
no lo recomiendo
no es para recomendar
\end{verbatim}

Se puede ver que la mayoría de las reglas depende sólo de las entidades definidas, pero hay casos en los que la expresion de la caracterización no es suficiente y se pierden casos de gran interés, como ser \comentario{no lo recomiendo}. Para no perder esto simplemente se agregó una regla que busca esta frase en particular.

En este punto es justo hacer notar que los modificadores tales como \emph{muy}, \emph{no}, \emph{más}, etc. no fueron caracterizados, haciendo imposible la detección de estas palabras en frases más complejas  Al igual que no se detectan frases que contengan aposiciones u otras construcciones gramáticas con relativo grado de complejidad. Estos casos quedan para futuras iteraciones de este sistema.

\subsection{Aplicación de reglas}

Una vez que se cuenta con el diccionario de las palabras clasificadas y con las reglas, es necesario aplicarlas a los comentarios. Con este fín se desarrolló un sistema informático que realice esta tarea.

El sistema toma como entrada:
\begin{itemize}
\item un archivo por cada grupo de palabras,
\item un archivo con las reglas definidas y
\item los comentarios a evaluar.
\end{itemize}

El resultado del procesamiento es un archivo de texto con todos los comentarios seguidos de las frases obtenidas y un detalle de cuál fué la regla que se usó para detectar la frase.
Por ejemplo:

\begin{quotation}
\emph{
\lq{}\lq{}{\bf La ambientacion es piola aunque} es {\bf un lugar bastante ruidoso}. {\bf  La pizza sigue siendo rica}. La desilusion fue el tartufo, que la moza me aseguro que era igual que en Italia y era un simple helado de chocolate.  Que lo llamen de otra manera, entonces.\rq{}\rq{}
}

Resultado:
\begin{itemize}
\item R0  un lugar bastante ruidoso - la pizza sigue siendo rica
\item R1  la ambientacion es piola aunque
\end{itemize}

\end{quotation}

\subsection{Recolección de resultados}
% Positivos, negativos, bla...

El siguiente es un ejemplo del resultado completo de sistema aplicado a un comentario:
\begin{verbatim}
comment: POSITIVO
<1-ops.yaml, user: 17248, service: bueno, food: buena, enviroment: muy bueno, date: 21-05-2010>
Texto orig: La ambientacion es piola aunque es un lugar bastante ruidoso.  La pizza sigue siendo
rica. La desilusion fue el tartufo, que la moza me aseguro que era igual que en Italia y era un
simple helado de chocolate.  Que lo llamen de otra manera, entonces. 
	result:
               | R0  un lugar bastante ruidoso- la pizza sigue siendo rica-
               | R1  la ambientacion es piola aunque-
\end{verbatim}
               
Donde lo primero que se lista es la clasificación del comentario como positivo/negativo (esta clasificación será explicada con mas detalle mas adelante), las clasificaciones de servicio, comida, ambiente realizadas por el usuario, el comentario original y el resultado de la aplicación de las reglas.

De esta manera se puede observar con claridad el funcionamiento del sistema de extracción de información.

En base a los resultados obtenidos se realizó un análisis preliminar sobre cada comentario, esto fué posible gracias a que los adjetivos fueron divididos en tres tipos
\begin{itemize}
\item Positivos,
\item Negativos,
\item Neutros
\end{itemize}

De esta manera dado un comentario se hizo un balance entre los adjetivos positivos y negativos que se identificaron como relevantes para dar una idea preliminar del matiz del mismo.

Una vez realizada la categorización de todos los comentarios de un restaurant se creo también un resumen de éste, para tener un una balance general de opiniones.

Para clasificar al restaurant se decidió este acercamiento, en vez de tener en cuenta el porcentaje de adjetivos positivos/negativos en el total de los comentarios, porque lo que se buscó fue encontrar el porcentaje de gente que estuvo conforme con el restaurant, contando a cada persona como un voto positivo o negativo según el matiz general de su comentario.

Vale aclarar que este análisis de los datos es sólo una análisis superficial, ya que un análisis mas profundo excede el alcance del trabajo propuesto.

\subsection{Consideraciones finales}
% Be free ;)

Para empezar, veamos un ejemplo de resultados:

\begin{quotation}

\emph{
\lq{}\lq{}{\bf El ambiente es agradable} y sencillo, {\bf la atencion fue muy buena}, de hecho ayudaron con sugerencias y recomendaciones ( quizas por ser dia de semana ) .  {\bf La comida fue deliciosa} y mi acompaniante, que estuvo en Mexico 2 meses, aseguro que {\bf fue el mejor Chile} Relleno que probo en Bs As. La pasta de frijoles y el guacamole exquisitos. {\bf La copa grande} de {\bf margarita es muy rica}. Creo que es el mas fiel a Mexico de todos los restaurantes, ya que tiene el estilo y sencillez de comida y el ambiente que realmente existe en ese pais.\rq{}\rq{}
}

Resultado:
\begin{itemize}
\item R1  el ambiente es agradable - la comida fue deliciosa
\item R2  la atencion fue muy buena - margarita es muy rica
\item R4  la copa grande
\item R5  fue el mejor chile
\end{itemize}

\end{quotation}

En este ejemplo se puede observar que lo único que falta identificar es la frase \comentario{La pasta de frijoles y el guacamole exquisitos}. Esto se debe a que tanto \emph{guacamole} como \emph{frijoles} no están identificados en el diccionario.

Esta falla es un caso típico que se dá cuando se introduce a la base de comentarios uno que haga referencia a platos no identificados previamente. Por este motivo es que se propuso una nueva forma de identificar entidades del dominio de manera más dinámica.

El proceso realizado para esto fue identificar a partir de resultados obtenidos frases relevantes. Luego se llevaron a reglas las estructuras de estas frases, y se procesan los comentarios, esto se verá mejor con un ejemplo:

Se toma la frase \comentario{fue el mejor chile}, que tiene la siguiente estructura \emph{VERBO ART ADJETIVO ENTIDAD}, si lo que se quiere es reconocer todas las entidades que no se encuentran en el diccionario se remplaza \emph{ENTIDAD} por la palabra clave \emph{XXXX}, de esta manera la regla sería: \emph{VERBO ART ADJETIVO XXXX}. 

Al analizar los comentarios del nuevo restaurant con esta regla, el sistema busca todas las oraciones que coincidan de manera tal que \emph{XXXX} sea cualquier palabra no conocida, reportandola como posible \emph{ENTIDAD}.

Existen casos en las que no se desean identificar palabras especificas, por esta razón se incorporó un diccionario de excepciones, las cuales no serán reconocidas con el método anterior.
